This invention relates to maintaining high performance availability of objects in distributed in-memory caches backed by a database. More specifically, replicas of objects are created and maintained on disks of two or more nodes to mitigate memory overhead while serving reads and writes at memory speeds.
To meet the needs of database-driven applications for high performance data access and analytics, applications often cache frequently read data in scale-out distributed in-memory key-value caches. Distributed in-memory caches speed up read transactions by reducing the number of reads a backing database must perform, while sending write data directly to the backing database for persistence.
As the majority of read transactions are served from caches at in-memory speeds, users expect read performance to remain high at all times, even in the presence of caching node failures. However, the performance between cache and backing database varies to a significant degree. A caching node failure can therefore impose a sudden unreasonably high load between the cache and backend database, degrading performance. A sudden change in performance during recovery time may be perceived by users as a failure. Accordingly, to meet performance expectations, applications require high performance availability and serve queries at in-memory speeds in the presence of failures.